package com.demos.cqp.dnt.domain;

import java.util.Arrays;
import java.util.List;

import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.ManyToOne;
import javax.persistence.OrderColumn;
import javax.persistence.Table;
import javax.persistence.Transient;


@Entity
@Table(name="DDVD")
public class DVD extends Element{

	
	
	public DVD() {
		super();
	}


	@ManyToOne //(cascade=CascadeType.ALL)
	private Utilisateur proprietaire;

	// private long id;

	public Utilisateur getProprietaire() {
		return proprietaire;
	}

	public void setProprietaire(Utilisateur proprietaire) {
		this.proprietaire = proprietaire;
	}

	

	// obligatoire
	private String titre ;
	

	private String realisateur;
	
	// pour se faciliter le travail, on pourra consid�rer qu�on rentre au plus 2 acteurs par DVD
	@ElementCollection(fetch=FetchType.EAGER)
	private List<String> acteurs = Arrays.asList(new String[]{"",""}); 
	private int note;
	
	// Genre est un �num�r� : si vous voulez simplifier, utilisez une String
	@ElementCollection(targetClass=Genre.class, fetch=FetchType.EAGER)
	@Enumerated
	@OrderColumn
	private List<Genre> genres;
	
	private int duree;
	
	@Transient
	private static int lastId = 0;
	
	public DVD(String titre, String realisateur, String[] acteurs, int note,
			Genre genre, int duree) {
		super();
		this.titre = titre;
		this.realisateur = realisateur;
		this.acteurs = Arrays.asList(acteurs);
		this.note = note;
		this.genres = Arrays.asList(new Genre[]{genre});
		this.duree = duree;
	}

	
	

	public static int getLastId() {
		return lastId;
	}




	public static void incLastId() {
		DVD.lastId++;
	}




//	public long getId() {
//		return id;
//	}
//
//
//
//
//	public void setId(long id) {
//		this.id = id;
//	}




	public String getTitre() {
		return titre;
	}



	public void setTitre(String titre) {
		this.titre = titre;
	}



	public String getRealisateur() {
		return realisateur;
	}



	public void setRealisateur(String realisateur) {
		this.realisateur = realisateur;
	}



	public String[] getActeurs() {
		return acteurs.<String>toArray(new String[]{});
	}



	public void setActeurs(String[] acteurs) {
		this.acteurs = Arrays.asList(acteurs);
	}



	public int getNote() {
		return note;
	}



	public void setNote(int note) {
		this.note = note;
	}



	public Genre getGenre() {
		return (genres == null || genres.size() == 0) ? null : genres.get(0);
	}



	public void setGenre(Genre genre) {
		this.genres = Arrays.asList(new Genre[]{genre});
	}



	public int getDuree() {
		return duree;
	}



	public void setDuree(int duree) {
		this.duree = duree;
	}



	
	
	
	public enum Genre{
		SF,
		COMEDY,
		THRILLER,
		SOAP,
		NON_RENSEIGNE
	}






//	public List<Genre> getGenres() {
//		return genres;
//	}
//
//	public void setGenres(List<Genre> genres) {
//		this.genres = genres;
//	}

	public void setActeurs(List<String> acteurs) {
		this.acteurs = acteurs;
	}

	public static void setLastId(int lastId) {
		DVD.lastId = lastId;
	}


	
	
}
